import axios from 'axios'
import router from '@/router'
import { Message } from 'element-ui'
axios.defaults.withCredentials = true // 允许携带凭证

const httpRequest = axios.create({
  baseURL: process.env.VUE_APP_BASE_IBEM_API, // url = base url + request url
  // timeout: 300 * 1000 // request timeout
})

// 添加请求拦截器
httpRequest.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // const tokenName = localStorage.getItem("tokenName");
  // const tokenValue = localStorage.getItem("tokenValue");
  // if (tokenValue) {
  // 	config.headers[tokenName] = tokenValue;
  // }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
httpRequest.interceptors.response.use(function (response) {
  if (response.data && response.data.code && response.data.code === 401) {
    Message.error('身份验证失败，请重新登录')
    router.replace('/login')
  }
  //console.log(response);

  // 对响应数据做点什么
  return response.data
}, error => {
  //console.log(error.response);

  //const cMessage = error.response.data.msg || '获取数据失败'
  if (error && error.response) {

    switch (error.response.status) {
      case 400:
        if("/ibem/api/v2/field/compute/moment.json"!=error.response.config.url){
          Message.error(error.response.data.message)
        }
        break
      case 401:
        Message.error('身份验证失败，请重新登录')
        router.replace('/login')
        return
      case 403:
        Message.error(error.response.data.message);
        break
      case 404:
        Message.error('页面没有找到')
        break
      case 500:
        Message.error(error.response.data.message);
        // Message.error('服务器端出错')
        break
      case 501:
        Message.error('网络未实现')
        break
      case 502:
        Message.error('网络错误')
        break
      case 504:
        Message.error('网络超时')
        break
      default:
        console.log(`连接错误${error.response.status}`)
    }
  } else {
    console.log('连接到服务器失败')
  }
  return Promise.reject(error)
})

export default httpRequest
